﻿using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Numerics;
using System.Reflection;
using System.Text;

namespace UtilZ.Dotnet.Ex.Base
{
    /// <summary>
    ///  Type类型扩展方法类
    /// </summary>
    public static partial class TypeEx
    {
        //CLR系统类型类

        #region 值类型
        /// <summary>
        /// bool类型
        /// </summary>
        public static readonly Type BoolType = typeof(bool);

        /// <summary>
        /// byte类型
        /// </summary>
        public static readonly Type ByteType = typeof(byte);

        /// <summary>
        /// char类型
        /// </summary>
        public static readonly Type CharType = typeof(char);

        /// <summary>
        /// DateTime类型
        /// </summary>
        public static readonly Type DateTimeType = typeof(DateTime);

        /// <summary>
        /// decimal类型
        /// </summary>
        public static readonly Type DecimalType = typeof(decimal);


        /// <summary>
        /// float类型
        /// </summary>
        public static readonly Type FloatType = typeof(float);

        /// <summary>
        /// double类型
        /// </summary>
        public static readonly Type DoubleType = typeof(double);

        /// <summary>
        /// Int16类型
        /// </summary>
        public static readonly Type Int16Type = typeof(Int16);

        /// <summary>
        /// Int32类型
        /// </summary>
        public static readonly Type Int32Type = typeof(Int32);

        /// <summary>
        /// Int64类型
        /// </summary>
        public static readonly Type Int64Type = typeof(Int64);

        /// <summary>
        /// sbyte类型
        /// </summary>
        public static readonly Type SByteType = typeof(sbyte);


        /// <summary>
        /// string类型
        /// </summary>
        public static readonly Type StringType = typeof(string);

        /// <summary>
        /// UInt16类型
        /// </summary>
        public static readonly Type UInt16Type = typeof(UInt16);

        /// <summary>
        /// UInt32类型
        /// </summary>
        public static readonly Type UInt32Type = typeof(UInt32);

        /// <summary>
        /// UInt64类型
        /// </summary>
        public static readonly Type UInt64Type = typeof(UInt64);

        /// <summary>
        /// BigInteger类型
        /// </summary>
        public static readonly Type BigIntegerType = typeof(BigInteger);

        /// <summary>
        /// Complex类型
        /// </summary>
        public static readonly Type ComplexType = typeof(Complex);

#if CORE7_P

        /// <summary>
        /// Int128类型
        /// </summary>
        public static readonly Type Int128Type = typeof(Int128);

        /// <summary>
        /// UInt128类型
        /// </summary>
        public static readonly Type UInt128Type = typeof(UInt128);

#endif

#if CORE

        /// <summary>
        /// Half类型
        /// </summary>
        public static readonly Type HalfType = typeof(Half);

        /// <summary>
        /// TimeOnly类型
        /// </summary>
        public static readonly Type TimeOnlyType = typeof(TimeOnly);

        /// <summary>
        /// DateOnly
        /// </summary>
        public static readonly Type DateOnlyType = typeof(DateOnly);

#endif

        #endregion

        #region 扩展类型
        /// <summary>
        /// Object类型
        /// </summary>
        public static readonly Type ObjectType = typeof(Object);

        /// <summary>
        /// TimeSpan类型
        /// </summary>
        public static readonly Type TimeSpanType = typeof(TimeSpan);

        /// <summary>
        /// DateTimeOffset类型
        /// </summary>
        public static readonly Type DateTimeOffsetType = typeof(DateTimeOffset);

        /// <summary>
        /// Guid类型
        /// </summary>
        public static readonly Type GuidType = typeof(Guid);

        /// <summary>
        /// byte[]类型
        /// </summary>
        public static readonly Type ByteAarrayType = typeof(byte[]);

        /// <summary>
        /// short[]类型
        /// </summary>
        public static readonly Type ShortAarrayType = typeof(short[]);

        /// <summary>
        /// float[]类型
        /// </summary>
        public static readonly Type FloatAarrayType = typeof(float[]);

        /// <summary>
        /// int[]类型
        /// </summary>
        public static readonly Type Int32AarrayType = typeof(int[]);

        /// <summary>
        /// double[]类型
        /// </summary>
        public static readonly Type DoubleAarrayType = typeof(double[]);
        #endregion


    }

}
